Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
75.00% |
3 / 4 |
CRAP | |
89.47% |
17 / 19 |
| ProductBuilder | |
0.00% |
0 / 1 |
|
75.00% |
3 / 4 |
8.07 | |
89.47% |
17 / 19 |
| __construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
6 / 6 |
|||
| createProduct | |
100.00% |
1 / 1 |
3 | |
100.00% |
10 / 10 |
|||
| addAttribute | |
0.00% |
0 / 1 |
2.00 | |
0.00% |
0 / 2 |
|||
| addOrReplaceValue | |
100.00% |
1 / 1 |
3 | |
100.00% |
1 / 1 |
|||
| <?php | |
| namespace Akeneo\Pim\Enrichment\Component\Product\Builder; | |
| use Akeneo\Pim\Enrichment\Component\Product\Model\EntityWithValuesInterface; | |
| use Akeneo\Pim\Enrichment\Component\Product\Model\ValueInterface; | |
| use Akeneo\Pim\Enrichment\Component\Product\ProductEvents; | |
| use Akeneo\Pim\Structure\Component\Model\AttributeInterface; | |
| use Akeneo\Pim\Structure\Component\Repository\AttributeRepositoryInterface; | |
| use Akeneo\Pim\Structure\Component\Repository\FamilyRepositoryInterface; | |
| use Symfony\Component\EventDispatcher\EventDispatcherInterface; | |
| use Symfony\Component\EventDispatcher\GenericEvent; | |
| /** | |
| * Product builder | |
| * | |
| * @author Nicolas Dupont <nicolas@akeneo.com> | |
| * @copyright 2013 Akeneo SAS (http://www.akeneo.com) | |
| * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) | |
| */ | |
| class ProductBuilder implements ProductBuilderInterface | |
| { | |
| /** @var EntityWithValuesBuilderInterface */ | |
| protected $entityWithValuesBuilder; | |
| /** @var AttributeRepositoryInterface */ | |
| protected $attributeRepository; | |
| /** @var FamilyRepositoryInterface */ | |
| protected $familyRepository; | |
| /** @var EventDispatcherInterface */ | |
| protected $eventDispatcher; | |
| /** @var string */ | |
| protected $productClass; | |
| /** | |
| * @param AttributeRepositoryInterface $attributeRepository Attribute repository | |
| * @param FamilyRepositoryInterface $familyRepository Family repository | |
| * @param EventDispatcherInterface $eventDispatcher Event dispatcher | |
| * @param EntityWithValuesBuilderInterface $entityWithValuesBuilder | |
| * @param array $classes Model classes | |
| */ | |
| public function __construct( | |
| AttributeRepositoryInterface $attributeRepository, | |
| FamilyRepositoryInterface $familyRepository, | |
| EventDispatcherInterface $eventDispatcher, | |
| EntityWithValuesBuilderInterface $entityWithValuesBuilder, | |
| array $classes | |
| ) { | |
| $this->attributeRepository = $attributeRepository; | |
| $this->familyRepository = $familyRepository; | |
| $this->eventDispatcher = $eventDispatcher; | |
| $this->productClass = $classes['product']; | |
| $this->entityWithValuesBuilder = $entityWithValuesBuilder; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function createProduct($identifier = null, $familyCode = null) | |
| { | |
| $product = new $this->productClass(); | |
| if (null !== $identifier) { | |
| $identifierAttribute = $this->attributeRepository->getIdentifier(); | |
| $this->addOrReplaceValue($product, $identifierAttribute, null, null, $identifier); | |
| } | |
| if (null !== $familyCode) { | |
| $family = $this->familyRepository->findOneByIdentifier($familyCode); | |
| $product->setFamily($family); | |
| } | |
| $event = new GenericEvent($product); | |
| $this->eventDispatcher->dispatch(ProductEvents::CREATE, $event); | |
| return $product; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function addAttribute(EntityWithValuesInterface $values, AttributeInterface $attribute) | |
| { | |
| $this->entityWithValuesBuilder->addAttribute($values, $attribute); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function addOrReplaceValue( | |
| EntityWithValuesInterface $values, | |
| AttributeInterface $attribute, | |
| ?string $localeCode, | |
| ?string $scopeCode, | |
| $data | |
| ) :ValueInterface { | |
| return $this->entityWithValuesBuilder->addOrReplaceValue($values, $attribute, $localeCode, $scopeCode, $data); | |
| } | |
| } |